// Copyright 2022 a.o.smith ALL Rights Reserved
package com.liuxinlong.modules.patent.service;

import com.liuxinlong.common.ImportResp;
import com.liuxinlong.modules.entity.PatentDepartment;
import com.liuxinlong.modules.entity.PatentDepartmentSpecial;

import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.Map;

/**
 * 部门信息接口
 * 
 * @author liuxinlong@hotwater.com.cn
 * @version 1.0.0
 * @since 2023-09-01
 *
 */
public interface PatentDepartmentService {
	/**
	 * 分页查询部门信息
	 *
	 * @param queryParam 请求信息
	 * @return 部门信息列表
	 */
	List<Map<String, Object>> pageDepartmentInfo(Map<String, Object> queryParam);

	/**
	 * 统计部门数量
	 *
	 * @param queryParam 查询参数
	 * @return 部门数量
	 */
	int countDepartment(Map<String, Object> queryParam);

	/**
	 * 新增部门信息
	 *
	 * @param patentDepartment 部门信息
	 */
	void addDepartmentInfo(PatentDepartment patentDepartment);

	/**
	 * 更新部门信息
	 *
	 * @param patentDepartment 部门信息
	 */
	void updateDepartmentInfo(PatentDepartment patentDepartment);

	/**
	 * 删除部门信息
	 *
	 * @param id 部门id
	 */
	void deleteDepartmentInfo(String id);

	/**
	 * 导入数据预处理
	 *
	 * @param fileName 文件地址
	 * @return 预处理数据
	 */
	ImportResp importDepartments(String fileName);

	/**
	 * 批量新增专利部门信息
	 *
	 * @param dataList 部门列表
	 * @return 失败数据
	 */
	ImportResp batchAddDepartment(List<PatentDepartment> dataList);

	/**
	 * 导出专利部门信息
	 *
	 * @param response response
	 */
	void exportPatentDepartment(HttpServletResponse response);

	/**
	 * 分页查询部门特殊用户信息
	 *
	 * @param queryParam 请求信息
	 * @return 部门特殊用户信息列表
	 */
	List<Map<String, Object>> pageDepartmentSpecialInfo(Map<String, Object> queryParam);

	/**
	 * 统计部门特殊用户数量
	 *
	 * @param queryParam 查询参数
	 * @return 部门特殊用户数量
	 */
	int countDepartmentSpecial(Map<String, Object> queryParam);

	/**
	 * 新增部门特殊用户信息
	 *
	 * @param patentDepartmentSpecial 部门特殊用户信息
	 */
	void addDepartmentSpecialInfo(PatentDepartmentSpecial patentDepartmentSpecial);

	/**
	 * 更新部门特殊用户信息
	 *
	 * @param patentDepartmentSpecial 部门特殊用户信息
	 */
	void updateDepartmentSpecialInfo(PatentDepartmentSpecial patentDepartmentSpecial);

	/**
	 * 删除部门特殊用户信息
	 *
	 * @param id 部门特殊用户id
	 */
	void deleteDepartmentSpecialInfo(String id);
}

